package leetcode_0001

/**
 * 暴力破解法
 *
 * 时间复杂度O(n^2)
 * 空间复杂度O(1)
 */
func twoSum1(nums []int, target int) []int {

	// 检测数组个数
	count := len(nums)
	if count < 2 {
		return []int{}
	}

	// 暴力破解
	for i := 0; i < count-1; i++ {
		for j := i + 1; j < count; i++ {
			if nums[i]+nums[j] == target {
				return []int{i, j}
			}
		}
	}

	return []int{}
}

/**
 * 一维哈希表
 *
 * 时间复杂度O(n)
 * 空间复杂度O(n)
 */
func twoSum2(nums []int, target int) []int {

	// 检测数组个数
	count := len(nums)
	if count < 2 {
		return []int{}
	}

	// 临时存储哈希表
	tmpHash := map[int]int{}
	for i := 0; i < count; i++ {

		if value, ok := tmpHash[nums[i]]; ok {
			return []int{value, i}
		}

		// 存入hash表
		tmpHash[target-nums[i]] = i
	}

	return []int{}
}
